var createError = require('http-errors');  //http-errors是一个为express、koa、connect等库创建HTTP错误的库。
var express = require('express');          //Express的作用和Node.js内置的http模块类似，是专门用来创建web服务器.就是一个npm上的第三方包，提供了快速创建Web服务器的便捷方法
var path = require('path');                //Nodejs官方 path模块
var cookieParser = require('cookie-parser');  //express中间件，解析和设置cookie
var logger = require('morgan');  //morgan是express默认的日志中间件，也可以脱离express，作为node.js的日志组件单独使用
var indexRouter = require('./routes/clt');  //路由目录
var app = express();

app.use(function (req, res, next) {
  //设置允许跨域的域名，*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin", "*");
  //允许的header类型
  res.header("Access-Control-Allow-Headers", "content-type");
  //跨域允许的请求方式
  res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
  if (req.method == "OPTIONS") res.sendStatus(200); //让options尝试请求快速结束
  else next();
});

app.use(logger('dev'));  //请求方法 ；请求的url和状态 ；响应耗时间 ；响应结果
app.use(express.json());  //它解析传入的 JSON 请求并将解析的数据放入 req.body
app.use(express.urlencoded({ extended: false }));  //URL格式转换，extended: false 使该中间件不要解析被嵌套的数据。
app.use(cookieParser());

app.use('/', indexRouter);

// app.use(function(req, res, next) {  //捕获404并转发到错误处理程序
//   next(createError(404));
// });

// 错误处理程序
// app.use(function(err, req, res, next) {
//   // 设置局部变量，仅提供开发中的错误
//   res.locals.message = err.message;
//   res.locals.error = req.app.get('env') === 'development' ? err : {};
//   // 呈现错误页面
//   res.status(err.status || 500);
//   res.render('error');
// });

module.exports = app;
